/*
 * Copyright 2008-2013 Freescale Semiconductor, Inc.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include <stdio.h>
#include "flib/rta.h"
#include "test_common.h"

enum rta_sec_era rta_sec_era;

int test_op_proto(uint32_t *buff)
{
	struct program prg;
	struct program *p = &prg;

	PROGRAM_CNTXT_INIT(p, buff, 0);
	if (need_bswap)
		PROGRAM_SET_BSWAP(p);

	/* RSA */

	/* Decrypt, no key encryption, no secret encryption */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, no key encryption, secret encryption nrm */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_FFF_ENC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_FFF_ENC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_FFF_ENC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, no key encryption, secret encryption ekt */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_FFF_EKT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_FFF_EKT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_FFF_EKT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, no key encryption, secret encryption nrm-tk */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC |
		      OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_FFF_TK_ENC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_FFF_TK_ENC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_FFF_TK_ENC
		      | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, no key encryption, secret encryption ekt-tk */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC |
		      OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_FFF_TK_EKT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_FFF_TK_EKT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_FFF_TK_EKT
		      | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(nrm), no secret encryption */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(nrm), secret(nrm) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(nrm), secret(ekt) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(nrm), secret(nrm-tk) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_TK_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_TK_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_TK_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(nrm), secret(ekt-tk) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_TK_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_TK_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_ENC |
		      OP_PCL_RSAPROT_FFF_TK_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(ekt), no secret encryption */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(ekt), secret(nrm) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(ekt), secret(ekt) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(ekt), secret(nrm-tk) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_TK_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_TK_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_TK_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(ekt), secret(ekt-tk) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_TK_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_TK_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_EKT |
		      OP_PCL_RSAPROT_FFF_TK_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(nrm-tk), no secret encryption */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC |
		      OP_PCL_RSAPROT_PPP_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_ENC
		      | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(nrm-tk), secret(nrm) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_ENC
		      | OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_ENC
		      | OP_PCL_RSAPROT_FFF_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(nrm-tk), secret(ekt) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_ENC
		      | OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_ENC
		      | OP_PCL_RSAPROT_FFF_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(nrm-tk), secret(nrm-tk) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_ENC
		      | OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_TK_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_TK_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_ENC
		      | OP_PCL_RSAPROT_FFF_TK_ENC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(nrm-tk), secret(ekt-tk) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_ENC
		      | OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_TK_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_ENC |
		      OP_PCL_RSAPROT_FFF_TK_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_ENC
		      | OP_PCL_RSAPROT_FFF_TK_EKT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(ekt-tk), no secret encryption */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC |
		      OP_PCL_RSAPROT_PPP_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_EKT
		      | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(ekt-tk), secret(nrm) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_EKT
		      | OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_EKT
		      | OP_PCL_RSAPROT_FFF_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(ekt-tk), secret(ekt) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_EKT
		      | OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_EKT
		      | OP_PCL_RSAPROT_FFF_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(ekt-tk), secret(nrm-tk) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_EKT
		      | OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_TK_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_TK_ENC | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_EKT
		      | OP_PCL_RSAPROT_FFF_TK_ENC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Decrypt, key(ekt-tk), secret(ekt-tk) */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_EKT
		      | OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_ND | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_TK_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQD | OP_PCL_RSAPROT_PPP_TK_EKT |
		      OP_PCL_RSAPROT_FFF_TK_EKT | OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSADECRYPT,
		 OP_PCL_RSAPROT_OP_DEC_PQDPDQC | OP_PCL_RSAPROT_PPP_TK_EKT
		      | OP_PCL_RSAPROT_FFF_TK_EKT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Encrypt, F in */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSAENCRYPT,
		 OP_PCL_RSAPROT_OP_ENC_F_IN);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSAENCRYPT,
		 OP_PCL_RSAPROT_OP_ENC_F_IN | OP_PCL_RSAPROT_FMT_PKCSV15);
	/* Encrypt, F out */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSAENCRYPT,
		 OP_PCL_RSAPROT_OP_ENC_F_OUT | OP_PCL_RSAPROT_PPP_RED);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSAENCRYPT,
		 OP_PCL_RSAPROT_OP_ENC_F_OUT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSAENCRYPT,
		 OP_PCL_RSAPROT_OP_ENC_F_OUT | OP_PCL_RSAPROT_FFF_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSAENCRYPT,
		 OP_PCL_RSAPROT_OP_ENC_F_OUT | OP_PCL_RSAPROT_FFF_ENC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSAENCRYPT,
		 OP_PCL_RSAPROT_OP_ENC_F_OUT | OP_PCL_RSAPROT_FFF_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSAENCRYPT,
		 OP_PCL_RSAPROT_OP_ENC_F_OUT | OP_PCL_RSAPROT_FFF_EKT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSAENCRYPT,
		 OP_PCL_RSAPROT_OP_ENC_F_OUT | OP_PCL_RSAPROT_FFF_TK_ENC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSAENCRYPT,
		 OP_PCL_RSAPROT_OP_ENC_F_OUT | OP_PCL_RSAPROT_FFF_TK_ENC |
		      OP_PCL_RSAPROT_FMT_PKCSV15);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSAENCRYPT,
		 OP_PCL_RSAPROT_OP_ENC_F_OUT | OP_PCL_RSAPROT_FFF_TK_EKT);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_RSAENCRYPT,
		 OP_PCL_RSAPROT_OP_ENC_F_OUT | OP_PCL_RSAPROT_FFF_TK_EKT |
		      OP_PCL_RSAPROT_FMT_PKCSV15);

	/* Diffie-Hellman */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN, 0);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_DECRYPT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_DECRYPT_Z | OP_PCL_PKPROT_EKT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_DECRYPT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_DECRYPT_Z |
		      OP_PCL_PKPROT_EKT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI |
		      OP_PCL_PKPROT_DECRYPT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI |
		      OP_PCL_PKPROT_DECRYPT_Z | OP_PCL_PKPROT_EKT_Z);

	/* F2m -- rare */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_F2M);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DECRYPT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DECRYPT_Z |
		      OP_PCL_PKPROT_EKT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_DECRYPT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_DECRYPT_Z | OP_PCL_PKPROT_EKT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI | OP_PCL_PKPROT_DECRYPT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI | OP_PCL_PKPROT_DECRYPT_Z |
		      OP_PCL_PKPROT_EKT_Z);

	/* ECC Diffie-Hellman  */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DECRYPT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DECRYPT_Z |
		      OP_PCL_PKPROT_EKT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_DECRYPT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_DECRYPT_Z | OP_PCL_PKPROT_EKT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI | OP_PCL_PKPROT_DECRYPT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI | OP_PCL_PKPROT_DECRYPT_Z |
		      OP_PCL_PKPROT_EKT_Z);
	/* F2m */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DECRYPT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DECRYPT_Z | OP_PCL_PKPROT_EKT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_DECRYPT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_DECRYPT_Z |
		      OP_PCL_PKPROT_EKT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI |
		      OP_PCL_PKPROT_DECRYPT_Z);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DIFFIEHELLMAN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI |
		      OP_PCL_PKPROT_DECRYPT_Z | OP_PCL_PKPROT_EKT_Z);

	/* DLC / ECC Keypair Generation */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_PUBLICKEYPAIR, 0);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_PUBLICKEYPAIR,
		 OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_PUBLICKEYPAIR,
		 OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_PUBLICKEYPAIR,
		 OP_PCL_PKPROT_F2M);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_PUBLICKEYPAIR,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_PUBLICKEYPAIR,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_PUBLICKEYPAIR,
		 OP_PCL_PKPROT_ECC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_PUBLICKEYPAIR,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_PUBLICKEYPAIR,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_PUBLICKEYPAIR,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_ECC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_PUBLICKEYPAIR,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_PUBLICKEYPAIR,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);

	/* DSA SIGN and ECDSA SIGN */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN, 0);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_MD5 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_MD5 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA1);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA1 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA1 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA256);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA256 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA256 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA384);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA384 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA384 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA512);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA512 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA512 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_MD5 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_MD5 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA1);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA1 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA1 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA256);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA256 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA256 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA384);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA384 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA384 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA512);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA512 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA512 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_MD5 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_MD5 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA1);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA1 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA1 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA256);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA256 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA256 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA384);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA384 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA384 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA512);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA512 | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA512 | OP_PCL_PKPROT_DECRYPT_PRI |
		      OP_PCL_PKPROT_EKT_PRI);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC |
		      OP_PCL_PKPROT_F2M);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512 |
		      OP_PCL_PKPROT_DECRYPT_PRI);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSASIGN,
		 OP_PCL_PKPROT_TEST | OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M
		      | OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512 |
		      OP_PCL_PKPROT_DECRYPT_PRI | OP_PCL_PKPROT_EKT_PRI);

	/* DSA VERIFY and ECDSA VERIFY */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY, 0);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_F2M);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA1);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA256);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA384);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_F2M | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA512);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_ECC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA1);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA256);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA384);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_DSA_MSG |
		      OP_PCL_PKPROT_HASH_SHA512);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA1);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA256);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA384);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DSAVERIFY,
		 OP_PCL_PKPROT_ECC | OP_PCL_PKPROT_F2M |
		      OP_PCL_PKPROT_DSA_MSG | OP_PCL_PKPROT_HASH_SHA512);

	/* IKE PRF */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_IKEV1_PRF,
		 OP_PCL_IKE_HMAC_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_IKEV1_PRF,
		 OP_PCL_IKE_HMAC_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_IKEV1_PRF,
		 OP_PCL_IKE_HMAC_SHA1);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_IKEV1_PRF,
		 OP_PCL_IKE_HMAC_AES128_CBC);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_IKEV2_PRF,
		 OP_PCL_IKE_HMAC_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_IKEV2_PRF,
		 OP_PCL_IKE_HMAC_SHA1);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_IKEV2_PRF,
		 OP_PCL_IKE_HMAC_AES128_CBC);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_IKEV2_PRF,
		 OP_PCL_IKE_HMAC_SHA256);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_IKEV2_PRF,
		 OP_PCL_IKE_HMAC_SHA384);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_IKEV2_PRF,
		 OP_PCL_IKE_HMAC_SHA512);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_IKEV2_PRF,
		 OP_PCL_IKE_HMAC_AES128_CMAC);

	/* SSL/TLS/dtls PRF */
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_SSL30_PRF,
		 OP_PCL_TLS10_3DES_EDE_CBC_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_TLS10_PRF,
		 OP_PCL_TLS10_3DES_EDE_CBC_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_TLS11_PRF,
		 OP_PCL_TLS10_3DES_EDE_CBC_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_TLS12_PRF,
		 OP_PCL_TLS10_3DES_EDE_CBC_MD5);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DTLS10_PRF,
		 OP_PCL_TLS10_3DES_EDE_CBC_MD5);

	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_SSL30_PRF,
		 OP_PCL_TLS_PVT_MASTER_SECRET_PRF_FF);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_TLS10_PRF,
		 OP_PCL_TLS_PVT_MASTER_SECRET_PRF_FF);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_TLS11_PRF,
		 OP_PCL_TLS_PVT_MASTER_SECRET_PRF_FF);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_TLS12_PRF,
		 OP_PCL_TLS_PVT_MASTER_SECRET_PRF_FE);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_TLS12_PRF,
		 OP_PCL_TLS_PVT_MASTER_SECRET_PRF_FF);
	PROTOCOL(p, OP_TYPE_UNI_PROTOCOL, OP_PCLID_DTLS10_PRF,
		 OP_PCL_TLS_PVT_MASTER_SECRET_PRF_FF);

	/* Blob */
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB, 0);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_FORMAT_NORMAL);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_FORMAT_NORMAL);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_SEC_MEM);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_SEC_MEM |
		      OP_PCL_BLOB_FORMAT_NORMAL);

	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_TKEK |
		      OP_PCL_BLOB_BLACK);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_TKEK |
		      OP_PCL_BLOB_BLACK);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_EKT |
		      OP_PCL_BLOB_BLACK);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_EKT |
		      OP_PCL_BLOB_TKEK | OP_PCL_BLOB_BLACK);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_SEC_MEM |
		      OP_PCL_BLOB_BLACK);

	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_FORMAT_TEST);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_FORMAT_TEST | OP_PCL_BLOB_REG_MEMORY |
		      OP_PCL_BLOB_SEC_MEM);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_FORMAT_MASTER_VER);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_FORMAT_MASTER_VER | OP_PCL_BLOB_SEC_MEM);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_FORMAT_MASTER_VER | OP_PCL_BLOB_BLACK);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_FORMAT_MASTER_VER | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_TKEK);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_FORMAT_MASTER_VER | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_EKT);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_FORMAT_MASTER_VER | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_EKT | OP_PCL_BLOB_TKEK);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_FORMAT_MASTER_VER | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_SEC_MEM | OP_PCL_BLOB_EKT);

	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB, 0);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_FORMAT_NORMAL);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_BLACK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_TKEK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_TKEK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_SEC_MEM);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_KEY1 | OP_PCL_BLOB_FORMAT_NORMAL);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_KEY1 | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_FORMAT_NORMAL);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_KEY1 | OP_PCL_BLOB_BLACK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_KEY1 | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_TKEK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_KEY1 | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_EKT);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_KEY1 | OP_PCL_BLOB_BLACK | OP_PCL_BLOB_EKT
		      | OP_PCL_BLOB_TKEK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_KEY2 | OP_PCL_BLOB_FORMAT_NORMAL);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_KEY2 | OP_PCL_BLOB_BLACK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_KEY2 | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_TKEK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_KEY2 | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_EKT);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_KEY2 | OP_PCL_BLOB_BLACK | OP_PCL_BLOB_EKT
		      | OP_PCL_BLOB_TKEK);

	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_PKE);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_PKE | OP_PCL_BLOB_BLACK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_PKE | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_TKEK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_PKE | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_EKT);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_PKE | OP_PCL_BLOB_BLACK | OP_PCL_BLOB_EKT
		      | OP_PCL_BLOB_TKEK);

	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_SPLIT);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_SPLIT | OP_PCL_BLOB_BLACK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_SPLIT | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_SEC_MEM | OP_PCL_BLOB_TKEK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_SPLIT | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_EKT | OP_PCL_BLOB_TKEK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_SPLIT | OP_PCL_BLOB_BLACK |
		      OP_PCL_BLOB_EKT | OP_PCL_BLOB_TKEK);

	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_FORMAT_TEST);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_FORMAT_TEST |
		      OP_PCL_BLOB_BLACK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_FORMAT_TEST |
		      OP_PCL_BLOB_BLACK | OP_PCL_BLOB_TKEK);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_FORMAT_TEST |
		      OP_PCL_BLOB_BLACK | OP_PCL_BLOB_EKT);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_FORMAT_TEST |
		      OP_PCL_BLOB_BLACK | OP_PCL_BLOB_TKEK | OP_PCL_BLOB_EKT);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_SPLIT | OP_PCL_BLOB_FORMAT_TEST |
		      OP_PCL_BLOB_BLACK | OP_PCL_BLOB_SEC_MEM);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_BLOB,
		 OP_PCL_BLOB_REG_MEMORY | OP_PCL_BLOB_FORMAT_TEST);

	/* packet/frame processing */
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_IPSEC,
		 OP_PCL_IPSEC_AES_CBC | OP_PCL_IPSEC_HMAC_SHA1_96);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_IPSEC,
		 OP_PCL_IPSEC_3DES | OP_PCL_IPSEC_HMAC_MD5_96);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_SRTP,
		 OP_PCL_SRTP_AES_CTR | OP_PCL_SRTP_HMAC_SHA1_160);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_SRTP,
		 OP_PCL_SRTP_AES_CTR | OP_PCL_SRTP_HMAC_SHA1_160);

	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_WIMAX,
		 OP_PCL_WIMAX_OFDM);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_WIMAX,
		 OP_PCL_WIMAX_OFDMA);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_WIMAX,
		 OP_PCL_WIMAX_OFDMA);

	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_WIFI, OP_PCL_WIFI);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_WIFI, OP_PCL_WIFI);

	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_MACSEC, OP_PCL_MACSEC);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_MACSEC, OP_PCL_MACSEC);

	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_SSL30,
		 OP_PCL_TLS10_RC4_128_SHA_5);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_SSL30,
		 OP_PCL_TLS10_RC4_128_SHA_5);

	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_TLS10,
		 OP_PCL_TLS10_AES_128_CBC_SHA_12);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_TLS10,
		 OP_PCL_TLS10_AES_128_CBC_SHA_12);

	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_TLS11,
		 OP_PCL_TLS10_AES_128_CBC_SHA_12);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_TLS11,
		 OP_PCL_TLS10_AES_128_CBC_SHA_12);

	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_TLS12,
		 OP_PCL_TLS10_AES_128_CBC_SHA_12);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_TLS12,
		 OP_PCL_TLS10_AES_128_CBC_SHA_12);

	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_DTLS10,
		 OP_PCL_TLS10_AES_128_CBC_SHA_12);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_DTLS10,
		 OP_PCL_TLS10_AES_128_CBC_SHA_12);

	if (rta_sec_era > RTA_SEC_ERA_5) {
		PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_3G_RLC_PDU,
			 OP_PCL_3G_RLC_NULL);
		PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_3G_RLC_PDU,
			 OP_PCL_3G_RLC_NULL);
	}
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_3G_RLC_PDU,
		 OP_PCL_3G_RLC_KASUMI);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_3G_RLC_PDU,
		 OP_PCL_3G_RLC_SNOW);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_3G_RLC_PDU,
		 OP_PCL_3G_RLC_KASUMI);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_3G_RLC_PDU,
		 OP_PCL_3G_RLC_SNOW);

	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_LTE_PDCP_USER,
		 OP_PCL_LTE_NULL);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_LTE_PDCP_USER,
		 OP_PCL_LTE_NULL);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_LTE_PDCP_USER,
		 OP_PCL_LTE_SNOW);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_LTE_PDCP_USER,
		 OP_PCL_LTE_AES);

	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_LTE_PDCP_USER,
		 OP_PCL_LTE_SNOW);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_LTE_PDCP_USER,
		 OP_PCL_LTE_AES);

	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_LTE_PDCP_CTRL,
		 OP_PCL_LTE_NULL);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_LTE_PDCP_CTRL,
		 OP_PCL_LTE_NULL);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_LTE_PDCP_CTRL,
		 OP_PCL_LTE_SNOW);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_LTE_PDCP_CTRL,
		 OP_PCL_LTE_SNOW);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_LTE_PDCP_CTRL,
		 OP_PCL_LTE_AES);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_LTE_PDCP_CTRL,
		 OP_PCL_LTE_AES);

	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_3G_DCRC,
		 OP_PCL_3G_DCRC_CRC7);
	PROTOCOL(p, OP_TYPE_ENCAP_PROTOCOL, OP_PCLID_3G_DCRC,
		 OP_PCL_3G_DCRC_CRC11);

	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_3G_DCRC,
		 OP_PCL_3G_DCRC_CRC7);
	PROTOCOL(p, OP_TYPE_DECAP_PROTOCOL, OP_PCLID_3G_DCRC,
		 OP_PCL_3G_DCRC_CRC11);

	return PROGRAM_FINALIZE(p);
}

uint32_t prg_buff[1000];

int main(int argc, char **argv)
{
	int size;

	pr_debug("OPERATION PROTOCOL program\n");
	rta_set_sec_era(RTA_SEC_ERA_5);
	size = test_op_proto(prg_buff);
	pr_debug("size = %d\n", size);
	print_prog(prg_buff, size);

	return 0;
}
